<?php

namespace app\controllers;

use Yii;
use yii\helpers\Url;
use app\Models\User;
use yii\web\Response;
use app\models\Forecast;
use yii\filters\VerbFilter;

class ForecastController extends \yii\web\Controller
{

  public function behaviors()
  {
      return array_merge(
          parent::behaviors(),
          [
              'verbs' => [
                  'class' => VerbFilter::className(),
                  'actions' => [
                      'delete' => ['POST'],
                  ],
              ],
          ]
      );
  }

  public function actionView($forecastId) {
    $response = Yii::$app->response;
    if (Yii::$app->user->isGuest) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 401;
      return ['message' => 'Неверные авторизационные данные'];
    } 

    // Проверяем корректность accountId
    if ($forecastId === null || !ctype_digit($forecastId) || $forecastId <= 0) {
        $response->format = \yii\web\Response::FORMAT_JSON;
        $response->statusCode = 400;
        return ['message' => 'forecastId должен быть целым положительным числом'];
    }

    $model =  Forecast::findOne(['id' => $forecastId]);   

    if ($model === null) {
        $response->format = \yii\web\Response::FORMAT_JSON;
        $response->statusCode = 404;
        return ['message' => 'Регион с regionld не найден'];
    }
  
    return $this->render('view', [
      'model' => $model,
    ]);
  }

  public function actionCreate() {
    $response = Yii::$app->response;  
    if (Yii::$app->user->isGuest) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 401;
      return ['message' => 'Неверные авторизационные данные'];
    }

    $model = new Forecast();

    if ($this->request->isPost) {
        if ($model->load($this->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }
    } else {
        $model->loadDefaultValues();
    }

    return $this->render('create', [
        'model' => $model,
    ]);
  }

  public function actionUpdate($forecastId) {
    $response = Yii::$app->response;
    if (Yii::$app->user->isGuest) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 401;
      return ['message' => 'Неверные авторизационные данные'];
    } 

    // Проверяем корректность accountId
    if ($forecastId === null || !ctype_digit($forecastId) || $forecastId <= 0) {
        $response->format = \yii\web\Response::FORMAT_JSON;
        $response->statusCode = 400;
        return ['message' => 'forecastId должен быть целым положительным числом'];
    }


    $model =  Forecast::findOne(['id' => $forecastId]);

    if ($model === null) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 404;
      return ['message' => 'Регион с regionld не найден'];
    }

    if ($this->request->isPost && $model->load($this->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id]);
    }

    return $this->render('update', [
        'model' => $model,
    ]);
  }

  public function actionDelete($forecastId) {
    $response = Yii::$app->response;
    if (Yii::$app->user->isGuest) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 401;
      return ['message' => 'Неверные авторизационные данные'];
    } 

    // Проверяем корректность accountId
    if ($forecastId === null || !ctype_digit($forecastId) || $forecastId <= 0) {
        $response->format = \yii\web\Response::FORMAT_JSON;
        $response->statusCode = 400;
        return ['message' => 'forecastId должен быть целым положительным числом'];
    }

    $model =  Forecast::findOne(['id' => $forecastId]);
    
    if ($model === null) {
      $response->format = \yii\web\Response::FORMAT_JSON;
      $response->statusCode = 404;
      return ['message' => 'Прогноз погоды с таким forecastld не найден'];
    }


    $model->delete();

    return $this->redirect(['/']);
  }
}